package com.zks.springbootcrud.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zks.springbootcrud.VO.Staff_DepartVO;
import com.zks.springbootcrud.entity.Staff;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
@Mapper
public interface StaffMapper extends BaseMapper<Staff> {


    @Select("select * from staff where staff.id = #{id}")
    @Results(    // 把 子查询 的结果写入到 主查询 的属性
            @Result(
                    column = "id",   // column ： 主查询中传递给子查询的参数
                    property = "departList", //property ： 主查询返回值中的哪个字段，需要注入子查询查到的结果
                    javaType = List.class,  //javaType： 子查询中的返回值类型
                    //@Many： 一对多、多对多使用该注解指定子查询接口方法
                    //many = @Many(select = “com.neu.mybatisplus.dao.CarDao.returnCars”) 指定子查询接口方法
                    //一句话版本：用column作为子查询的参数，将子查询返回值写入property
                    many = @Many(select = "com.zks.springbootcrud.mapper.DepartMapper.returnDepartment")

            )
    )
    Staff_DepartVO selectStaffAndHisDepart(@Param("id") int id);


    //获取返回部门所属员工信息
    @Select("select staff.* from staff_depart,staff where staff_depart.depart_id = #{depart_id} and staff.id = staff_depart.staff_id")
    List<Staff> returnDepartStaffList(@Param("depart_id") int id);


}
